package cn.hou.java8;

import java.util.Comparator;
import java.util.function.Consumer;

import org.junit.Test;
//lambda表达式
public class Test01 {
	
	@Test
	public void test01(){
		//1无参无返回值
		Runnable r1=()->System.out.println("hello lambda");
		r1.run();
		
		//2 有一个参数无返回值
		// java8中首次出现Consumer接口，用于接收一个输入参数并处理，不返回任何值
		Consumer c=(x)->System.out.println(x);
		//accept方法处理输入的参数
		c.accept("哈哈");
		//只有一个参数小括号可以省略不写
		Consumer c1=x->System.out.println(x);
		//accept方法处理输入的参数
		c.accept("呵呵");
	}
	@Test
	public void test02(){
		//两个参数,多条语句并且有返回值
		Comparator<Integer> com=(x,y)->{
			System.out.println("比较器");
			return Integer.compare(x, y);
		};
		System.out.println(com.compare(5, 2));// 1
		
		//一条语句,并且有一条语句,有返回值,大括号和return可以省略
		Comparator<Integer> com1=(x,y)->Integer.compare(x, y);
		System.out.println(com1.compare(5, 5));// 0
	}
	
	@Test
	public void test03(){
		//使用lambda表达式重写接口方法
		Integer result = oper(100,x->x+100);
		System.out.println(result); // 200
	}
	//定义运算方法,接受接口实现接口运算
	public Integer oper(Integer num,MyOperation mp){
		return mp.operation(num);
	}

}
